package com.todo.biz.infrastructure.repository;


import com.todo.common.common.entity.response.page.PageResult;
import com.todo.biz.infrastructure.entity.condition.FeedbackCondition;
import com.todo.biz.infrastructure.entity.po.FeedbackPO;

import java.util.List;

/**
 * (Feedback)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 21:10:04
 */
public interface FeedbackRepository {

    /**
     * 多条件查询反馈信息列表
     *
     * @param feedbackCondition
     * @return
     */
    PageResult<FeedbackPO> queryFeedbackByCondition(FeedbackCondition feedbackCondition);

    /**
     * 多条件查询反馈信息列表总数
     *
     * @param feedbackCondition
     * @return
     */
    Long queryCountByCondition(FeedbackCondition feedbackCondition);

    /**
     * 根据主键查询反馈信息详情
     *
     * @param id
     * @return
     */
    FeedbackPO queryFeedbackPOById(Long id);

    /**
     * 新增反馈信息
     *
     * @param feedbackPO
     * @return
     */
    Boolean insertFeedbackPO(FeedbackPO feedbackPO);

    /**
     * 根据主键信息更新反馈信息
     *
     * @param feedbackPO
     * @return
     */
    Boolean updateFeedbackPOById(FeedbackPO feedbackPO);

    /**
     * 根据id删除反馈信息
     *
     * @param id
     * @return
     */
    Boolean removeFeedbackPOById(Long id);

    /**
     * 更新反馈状态
     *
     * @param id
     * @param oldStatus
     * @param newStatus
     * @return
     */
    Boolean updateStatusById(Long id, Integer oldStatus, Integer newStatus);

    /**
     * 根据用户id以及状态查询反馈列表
     *
     * @param createUser
     * @param status
     * @return
     */
    List<FeedbackPO> queryFeedbackListByUserAndStatus(Long createUser, Integer status);

    /**
     * 根据id列表批量删除反馈信息
     *
     * @param idList
     * @return
     */
    Boolean removeFeedbackPOByIdList(List<Long> idList);
}
